'''
::
    
    FONT0816 = 0x01         #size: w=8, h=16
    FONT1632 = 0X02         #size: w=16, h=32
    FONT2448 = 0X03         #size: w=24, h=48   
    FONT3264 = 0X04         #size: w=32, h=64
    FONT4080 = 0X05         #size: w=40, h=80
    FONT4896 = 0X06         #size: w=48, h=90
    
    
    NOCOLOR = 0X1000000  
    RED     = 0XFF0000
    GREEN   = 0X00FF00
    BLUE    = 0X0000FF
    WHITE   = 0XFFFFFF
    BLACK   = 0X000000
    
'''

def GPU_WrData(data):
    '''
    向GPU写数据的最底层操作    

    * 参数   
        * data - 要写的数据 
            
            
    * 返回   : 无

    * raise  :   无
    '''

def GPU_WrRGB(color):
    '''
    向GPU写一个像素颜色        

    * 参数  
        * data -写像素数据时 color[23:16]为红数据，color[15:8]为绿数据，color[7:0]蓝数据 
        如纯红色 color=0xff0000

    * 返回   : 无

    * raise  :   无
    '''

def GPU_WrNoRGB():
    '''
    向GPU写一个空颜色,占位用.用做对齐    

    * 参数   : 无

    * 返回   : 无

    * raise  :   无

    '''

def GPU_WrByteRGB(data):
    '''
    向GPU写一个字节颜色 

    * 参数   : 无

    * 返回   : 无

    * raise  :   无

    '''

def GPU_LoadFrame(frame):
    '''
    开始加载画面，函数参数决定加载为第几个画面

    * 参数   
        * frame - 画面号，从0开始

    * 返回   : 无

    * raise  :   无
    '''

def GPU_DisplayFrame(frame):
    '''
    显示某幅画面

    * 参数   
        * frame - 要显示的画面号，从0开始

    * 返回   : 无

    * raise  :   无
    '''

def GPU_DisplayFrameCh(ch, frame):
    '''
    显示某通道的某幅画面

    * 参数   
        * ch - 通道,从0开始
        * frame - 要显示的画面号,从0开始

    *返回   : 无

    * raise  :   无
    '''

def GPU_GotoXy(x, y):
    '''
    跳转lcd面板显示坐标

    * 参数 
        * x - 水平方向坐標,从0开始
        * y - 垂直方向坐標,从0开始

    *返回   : 无

    * raise  :   无
    '''

def GPU_GotoLoadFrameXy(x, y):
    '''
    跳转加载画面缓存区像素坐标，由GPU_LoadFrame()函数设定的画面

    * 参数  
        * x:  - 水平方向坐標，从0开始
        * y : - 垂直方向坐標，从0开始

    * 返回   : 无

    * raise  :   无
    '''

def GPU_GetVersion(firm_ver):
    '''
    获取GPU 固件版本

    * 参数  
        * firm_ver: ver[4] : 四个字节的固件版本号

    * 返回   : 无

    * raise  :   无
    '''

def GPU_Pure_Frame(rgb):
    '''
    直接刷纯画面

    * 参数   
        * rgb->纯画面的rgb
            参数是24位, 如纯红色 rgb=0xff0000
    * 返回   : 无

    * 注意   : 该函数画面不缓存,既调既显示

    * raise  :   无
    '''

def GPU_Gay_Frame(dir, mode, rgb):
    '''
    直接刷灰阶画面

    * 参数   
        * dir: 0:x变化 1:Y变化  
        * mode:0:由浅到深 1:由深到浅
        * rgb:启用什么颜色的灰度 0x7:都启用,就是黑到白的过渡   0x4:红色灰度 0x1:蓝色灰度 0x2:绿色灰度

    * 返回   : 无

    * 注意   : 该函数画面不缓存,既调既显示

    * raise  :   无
    '''

def GPU_Edge_Frame(mode):
    '''
    直接刷边框画面

    * 参数  
        * mode=0白色边框 mode=1左边红色,右边蓝色

    * 返回   : 无

    * 注意   : 该函数画面不缓存,既调既显示

    * raise  :   无
    '''

def GPU_CT_Frame(H_Ratio, V_Ratio, InRGB, ExRGB):
    '''
    直接刷画中框画面

    * 参数 
        * H_Ratio: ->左边开始行的份数作为起始位置  
        * V_Ratio:上边开始列的份数作为起始位置 
        * InRGB:边框中心的颜色,参数是24位, 如纯红色 InRGB=0xff0000
        * ExRGB:边框外边的颜色,参数是24位, 如纯红色 ExRGB=0xff0000

    * 返回   : 无

    * 注意   : 该函数画面不缓存,既调既显示.
            Ratio总共10份
    '''

def GPU_Checker_Frame(H_Sum, V_Sum, RGB1, RGB2):
    '''
    直接刷棋盘格画面
    
    * 参数   
        * H_Sum:  行的格子数  
        * V_Sum:  列的格子数 
        * RGB1:   第一个格子的颜色,参数是24位, 如纯红色 RGB1=0xff0000
        * RGB2:   第二个格子的颜色,参数是24位, 如纯红色 RGB2=0xff0000

    * 返回   : 无

    * 注意   : 该函数画面不缓存,既调既显示.

    * raise  :   无

    '''

def GPU_Flicker_Frame(rgb1, rgb2):
    '''
    直接刷Flicker画面

    * 参数   
        * rgb1:第一个颜色 rgb2:第二个颜色
            参数是24位, 如纯红色 rgb=0xff0000

    * 返回   : 无

    * 注意   : rgb1,rgb2交替显示.该函数画面不缓存,既调既显示.

    * raise  :   无
    '''

def GPU_ColorBar_Frame(dir):
    '''
    直接刷彩条画面

    * 参数   
        * dir: 0:x方向 1:Y方向

    * 返回   : 无

    * 注意   : 该函数画面不缓存,既调既显示.

    * raise  :   无
    '''

def GPU_ShowPoint(x, y, rgb):
    '''
    画点

    * 参数   
        * x: x坐标  
        * y:y坐标
            rgb:点的颜色  , 参数是24位, 如纯红色 rgb=0xff0000

    *返回   : 无

    *注意   : 画的是其他显示页面的点,可以在内存驻留
            适用打小范围的点,量大会显的很慢

    * raise  :   无             
    '''

def GPU_ShowFramePoint(x, y, rgb):
    '''
    画点

    * 参数   
        * x: x坐标  
        * y: y坐标
            rgb:点的颜色  , 参数是24位, 如纯红色 rgb=0xff0000

    *返回   : 无

    *注意   : 画的是其他显示页面的点,可以在内存驻留
            适用打小范围的点,量大会显的很慢

    * raise  :   无             
    '''

def GPU_RamDatAlign():
    '''
    打点后的数据对齐用

    * 参数   : 无

    * 返回   : 无

    * 注意   : 无
    
    * raise  :   无 
    '''

def GPU_SetInsideCh(ch):
    '''
    设置翻页模式

    * 参数   : 要翻页的通道,从0开始 0xff为一起翻页

    * 返回   : 无

    * 注意   : 无

    * raise  :   无 
    '''

def ShowString(x,y,font,color,Bcolor,name):
    '''
    显示一串字符，（注意 不会自动换行）

    * 参数
        * x - 起始坐标水平方向值
        * y - 起始坐标垂直方向值
        * font - 字体尺寸参数 详见上面的字体尺寸参数宏定义
        * color - 字符颜色, 如：color=0xFF0000为纯红色, color=0x00ff00为纯绿色，无色赋值为color=0X1000000
        * Bcolor - 字符背景颜色，如：color=0xFF0000为纯红色, color=0x00ff00为纯绿色，无色赋值为color=0X1000000
        * name - 要显示的名字，以字符串形式显示

    * 返回   : 无

    * raise  :   无 
    '''

def LoadString(x,y,font,color,Bcolor,name):
    '''
    加载一串字符，是在图片缓存区加载一串字符串,不是马上显示的（注意 不会自动换行）

    * 参数
        * x - 起始坐标水平方向值
        * y - 起始坐标垂直方向值
        * font - 字体尺寸参数 详见宏定义
        * color - 字符颜色, 如：color=0xFF0000为纯红色, color=0x00ff00为纯绿色，无色赋值为color=NOCOLOR
        * Bcolor - 字符背景颜色，如：color=0xFF0000为纯红色, color=0x00ff00为纯绿色，无色赋值为color=NOCOLOR
        * name - 要显示的名字，以字符串形式显示

    * 返回   : 无

    * raise  :   无 
    '''

def Show_DrawLine(x1,y1,x2,y2,rgb):
    '''
    画线

    * 参数 
        * x1: 起点X坐标
        * y1: 起点Y坐标
        * x2: 终点坐标
        * y2: 终点坐标 
        * rgb: 颜色, 参数是24位, 如纯红色 rgb=0xff0000

    * 返回   : 无

    * raise  :   无 
    '''

def Show_DrawRectangle(x1,y1,x2,y2,rgb):
    '''
    画矩形

    * 参数 
        * x1: 起点X坐标
        * y1: 起点Y坐标
        * x2: 终点坐标
        * y2: 终点坐标 
        * rgb: 颜色, 参数是24位, 如纯红色 rgb=0xff0000

    *返回   : 无

    * raise  :   无
    '''

def Show_DrawCircle(x,y,r,rgb):
    '''
    在指定位置画一个指定大小的圆

    * 参数  
        * (x,y): 中心点
        * r: 半径
        * rgb  : 颜色, 参数是24位, 如纯红色 rgb=0xff0000

    * 返回   : 无

    * raise  :   无
    '''

class GPU(object):
    '''√
    GPU模块类

    * 参数 :    无   
    * 返回 :    无   
    * 注意 :    无   
        不用实例化，可以直接使用
    * raise  :   无            
    '''


    def Get_MasterBoard_Total(self):
        '''
        获取板子总数

        * 参数  : 无

        * 返回  : 无

        * raise  :   无
        '''

    def GetMasterBoard(self):
        '''
        获取主机板子总数

        * 参数  : 无

        * 返回  : 无

        * raise  :   无
        '''

    def Master_AllEnable(self):
        '''
        使能的所有Master(Master一般是指带GPU的板子)

        * 参数  : 无

        * 返回  : 无

        * raise  :   无
        '''

    def MasterSlave_AllEnable(self):
        '''
        使能所有Master(Master一般是指带GPU的板子)
        使能所有Slave(Slave是指Master(GPU)下的器件(比如2832))

        * 参数  : 无

        * 返回  : 无

        * raise  :   无
        '''

    def Master_IndexEnable(self,index):
        '''
        使能单个Master(Master一般是指带GPU的板子)信号盒。

        * 参数 
            * index : 信号盒ID   0-信号盒0,1-信号盒1,2-信号盒2,3-信号盒3

        * 返回  : 无

        * raise  :   无
        '''

    def GPU_WrData(self,data):
        '''
        向GPU写数据的最底层操作    

        * 参数   : data - 要写的数据

        * 返回   : 无

        * raise  :   无
        '''

    def GPU_WrRGB(self,color):
        '''
        向GPU写一个像素颜色        

        * 参数  
            * data -写像素数据时 color[23:16]为红数据，color[15:8]为绿数据，color[7:0]蓝数据 \
                如纯红色 color=0xff0000

        * 返回   : 无

        * raise  :   无
        '''

    def GPU_WrNoRGB(self):
        '''
        向GPU写一个空颜色,占位用.用做对齐    

        * 参数   : 无

        * 返回   : 无

        * raise  :   无

        '''

    def GPU_WrByteRGB(self,data):
        '''
        向GPU写一个字节颜色 

        * 参数   : 无

        * 返回   : 无

        * raise  :   无

        '''

    def GPU_LoadFrame(self,frame):
        '''
        开始加载画面，函数参数决定加载为第几个画面

        * 参数   
            * frame : 画面号，从0开始

        * 返回   : 无

        * raise  :   无
        '''

    def GPU_DisplayFrame(self,frame):
        '''
        显示某幅画面

        * 参数   
            * frame - 要显示的画面号，从0开始

        * 返回   : 无

        * raise  :   无
        '''

    def GPU_DisplayFrameCh(self,ch, frame):
        '''
        显示某通道的某幅画面

        * 参数   
            * ch - 通道,从0开始
            * frame - 要显示的画面号,从0开始

        *返回   : 无

        * raise  :   无
        '''

    def GPU_GotoXy(self,x, y):
        '''
        跳转lcd面板显示坐标

        * 参数 
            * x - 水平方向坐標,从0开始
            * y - 垂直方向坐標,从0开始

        *返回   : 无

        * raise  :   无
        '''

    def GPU_GotoLoadFrameXy(self,x, y):
        '''
        跳转加载画面缓存区像素坐标，由GPU_LoadFrame()函数设定的画面

        * 参数  
            * x:  - 水平方向坐標，从0开始
            * y : - 垂直方向坐標，从0开始

        * 返回   : 无

        * raise  :   无
        '''

    def GPU_GetVersion(self,firm_ver):
        '''
        获取GPU 固件版本

        * 参数  
            * firm_ver: ver[4] : 四个字节的固件版本号

        * 返回   : 无

        * raise  :   无
        '''

    def GPU_Pure_Frame(self,rgb):
        '''
        直接刷纯画面

        * 参数   
            * rgb->纯画面的rgb

        * 返回   : 无

        * 注意   : 该函数画面不缓存,既调既显示

        * raise  :   无
        '''

    def GPU_Gay_Frame(self,dir, mode, rgb):
        '''
        直接刷灰阶画面

        * 参数   
            * dir: 0:x变化 1:Y变化  
            * mode:0:由浅到深 1:由深到浅
            * rgb:启用什么颜色的灰度 0x7:都启用,就是黑到白的过渡   0x4:红色灰度 0x1:蓝色灰度 0x2:绿色灰度

        * 返回   : 无

        * 注意   : 该函数画面不缓存,既调既显示

        * raise  :   无
        '''

    def GPU_Edge_Frame(self,mode):
        '''
        直接刷边框画面

        * 参数  
            * mode=0白色边框 mode=1左边红色,右边蓝色

        * 返回   : 无

        * 注意   : 该函数画面不缓存,既调既显示

        * raise  :   无
        '''

    def GPU_CT_Frame(self,H_Ratio, V_Ratio, InRGB, ExRGB):
        '''
        直接刷画中框画面

        * 参数 
            * H_Ratio: ->左边开始行的份数作为起始位置  
            * V_Ratio:上边开始列的份数作为起始位置 
            * InRGB:边框中心的颜色
            * ExRGB:边框外边的颜色

        * 返回   : 无

        * 注意   : 该函数画面不缓存,既调既显示.
                Ratio总共10份
        '''

    def GPU_Checker_Frame(self,H_Sum, V_Sum, RGB1, RGB2):
        '''
        直接刷棋盘格画面
        
        * 参数   
            * H_Sum:  行的格子数  
            * V_Sum:  列的格子数 
            * RGB1:   第一个格子的颜色
            * RGB2:   第二个格子的颜色

        * 返回   : 无

        * 注意   : 该函数画面不缓存,既调既显示.

        * raise  :   无

        '''

    def GPU_Flicker_Frame(self,rgb1, rgb2):
        '''
        直接刷Flicker画面

        * 参数   
            * rgb1:第一个颜色 rgb2:第二个颜色

        * 返回   : 无

        * 注意   : rgb1,rgb2交替显示.该函数画面不缓存,既调既显示.

        * raise  :   无
        '''

    def GPU_ColorBar_Frame(self,dir):
        '''
        直接刷彩条画面

        * 参数   
            * dir: 0:x方向 1:Y方向

        * 返回   : 无

        * 注意   : 该函数画面不缓存,既调既显示.

        * raise  :   无
        '''

    def GPU_ShowPoint(self,x, y, rgb):
        '''
        画点

        * 参数   x: x坐标  
        * 参数   y:y坐标
                rgb:点的颜色  

        *返回   : 无

        *注意   : 画的是其他显示页面的点,可以在内存驻留
                适用打小范围的点,量大会显的很慢

        * raise  :   无             
        '''

    def GPU_ShowFramePoint(self,x, y, rgb):
        '''
        画点

        * 参数   x: x坐标  
        * 参数   y:y坐标
                rgb:点的颜色  

        *返回   : 无

        *注意   : 画的是其他显示页面的点,可以在内存驻留
                适用打小范围的点,量大会显的很慢

        * raise  :   无             
        '''

    def GPU_RamDatAlign(self):
        '''
        打点后的数据对齐用

        * 参数   : 无

        * 返回   : 无

        * 注意   : 无
        
        * raise  :   无 
        '''

    def GPU_SetInsideCh(self,ch):
        '''
        设置翻页模式

        * 参数   : 要翻页的通道,从0开始 0xff为一起翻页

        * 返回   : 无

        * 注意   : 无

        * raise  :   无 
        '''

    def ShowString(self,x,y,font,color,Bcolor,name):
        '''
        显示一串字符，（注意 不会自动换行）

        * 参数
            * x - 起始坐标水平方向值
            * y - 起始坐标垂直方向值
            * font - 字体尺寸参数 详见上面的字体尺寸参数宏定义
            * color - 字符颜色, 如：color=0xFF0000为纯红色, color=0x00ff00为纯绿色，无色赋值为color=0X1000000
            * Bcolor - 字符背景颜色，如：color=0xFF0000为纯红色, color=0x00ff00为纯绿色，无色赋值为color=0X1000000
            * name - 要显示的名字，以字符串形式显示

        * 返回   : 无

        * raise  :   无 
        '''

    def LoadString(self,x,y,font,color,Bcolor,name):
        '''
        加载一串字符，是在图片缓存区加载一串字符串,不是马上显示的（注意 不会自动换行）

        * 参数
            * x - 起始坐标水平方向值
            * y - 起始坐标垂直方向值
            * font - 字体尺寸参数 详见宏定义
            * color - 字符颜色, 如：color=0xFF0000为纯红色, color=0x00ff00为纯绿色，无色赋值为color=NOCOLOR
            * Bcolor - 字符背景颜色，如：color=0xFF0000为纯红色, color=0x00ff00为纯绿色，无色赋值为color=NOCOLOR
            * name - 要显示的名字，以字符串形式显示

        * 返回   : 无

        * raise  :   无 
        '''

    def Show_DrawLine(self,x1,y1,x2,y2,rgb):
        '''
        画线

        * 参数 
            * x1: 起点X坐标
            * y1: 起点Y坐标
            * x2: 终点坐标
            * y2: 终点坐标 
            * rgb: 颜色

        * 返回   : 无

        * raise  :   无 
    '''

    def Show_DrawRectangle(self,x1,y1,x2,y2,rgb):
        '''
        画矩形

        * 参数 
            * x1: 起点X坐标
            * y1: 起点Y坐标
            * x2: 终点坐标
            * y2: 终点坐标 
            * rgb: 颜色

        *返回   : 无

        * raise  :   无
        '''

    def Show_DrawCircle(self,x,y,r,rgb):
        '''
        在指定位置画一个指定大小的圆

        * 参数  
            * (x,y): 中心点
            * r: 半径
            * rgb  : 颜色

        * 返回   : 无

        * raise  :   无
        '''

